<?php
/*
	插件增删查改
	
	
*/
defined('BY_JYA') or exit('error');
$_RQ['op']=$_RQ['op']?$_RQ['op']:'list';
$result=array();
$tabs=array(
	array('op'=>'list','title'=>'插件列表'),
);
if($_RQ['op']=='list'){
	//搜索
	$params=array('is_my'=>1,'type <>'=>4);
	if($_RQ['title']){
		$params['title like']='%'.trim($_RQ['title']).'%';
		$return['params']['title']=$_RQ['title'];
	}
	$fields=array('id','name','cloud_id','up_my','title','is_local');
	$pindex = max(1, intval($_RQ['page']));
	$psize = 15;
	$total='';
	$list=pdo_getslice('core_plugins',$params,array($pindex,$psize),$total,$fields,'','id desc');
	$return['list']=$list?$list:array();
	foreach($return['list'] as &$item){
		$item['look']=array('plugin'=>$item['name'],'action'=>'basic.module_home','title'=>'查看效果');
		$item['config']=array('op'=>'config','query'=>'plugin_name='.$item['name'],'title'=>'生成配置文件');
		$item['down']=array('op'=>'down','query'=>'plugin_name='.$item['name'],'title'=>'打包下载');
		$item['wxapp']=array('op'=>'wxapp','query'=>'plugin_name='.$item['name'],'title'=>'打包下载');
		//$item['release']=array('plugin'=>'core','action'=>'app_release.plugin','op'=>'release','title'=>'发布');
		$item['iscloud']=$item['cloud_id']>0?1:0;
		$item['cancloud_id']=$item['cloud_id']==0 && $item['is_local']!=1?1:0;
	}
	$totalpage=ceil($total/$psize);
	$totalpage=intval($totalpage);
	$return['totalpage'] =$totalpage;
	$return['params']['page'] =$pindex;
	//页面显示设置
	$htmls=array(
		'type'=>'list',
		'list'=>array('data'=>'list','delall'=>false,'del_message'=>'删除插件会同时删除插件所属页面、数据表、接口等数据，删除后不可恢复！是否确定要删除？','edit'=>false,'list'=>array(
			array('name'=>'name','title'=>'插件标识','type'=>'string'),
			array('name'=>'title','title'=>'插件名称','type'=>'string'),
			array('name'=>'iscloud','title'=>'已发布进云市场？','type'=>'radio','options'=>'iscloud'),
			array('name'=>'up_my','title'=>'已发布个人市场？','type'=>'radio','options'=>'isup_my'),
			array('name'=>'is_local','title'=>'私域插件？','type'=>'switch','set'=>'set'),
			array('name'=>'look','title'=>'查看效果','type'=>'href'),
		),'action'=>array(
			array('op'=>'release','title'=>'发布进云市场','type'=>'post','show'=>array('cancloud_id'=>1)),
			array('op'=>'releasemy','title'=>'发布个人市场','type'=>'post','show'=>array('up_my'=>'0')),
			array('type'=>'href','action'=>'app_develop.plugin','op'=>'edit','title'=>'管理'),
			array('op'=>'install_data','title'=>'初始数据设置','type'=>'href'),
			array('op'=>'table','title'=>'数据表设置','type'=>'href'),
			array('type'=>'post','message'=>'确定已经设置好数据表和初始化数据吗？（默认以插件标识为数据表前缀的，无需设置！）','name'=>'config','title'=>'生成配置文件'),
			array('type'=>'post','name'=>'down','title'=>'打包下载'),
			array('type'=>'modal','name'=>'wxapp','title'=>'打包小程序'),
		)),
		'search_one'=>array('name'=>'title','add_op'=>'add'),
	);
	$return['iscloud']=array('未发布','已发布');
	$return['isup_my']=array('未发布','已发布');
	$return['htmls']=$htmls;
	set_html('tabs',$tabs);
	exi($return);
}
if($_RQ['op']=='wxapp'){
	if($_RQ['postdata']){
		$post=get_postdata();
		$buffer=array(
			'plugin_name'=>$post['plugin_name'],
			'index_page'=>$post['index_page'],
			'wxapp_id'=>$post['wxapp_id'],
		);
		$buffer_id=buffer_save($buffer);
		$url=download_url('core/app_develop.plugin/down_wxapp/buffer_id='.$buffer_id);
		exi('','','',$url);
	}
	$item=array(
		'plugin_name'=>$_RQ['plugin_name'],
		'index_page'=>$_RQ['plugin_name'].'/index/'
	);
	$return['item']=$item;
	$return['wxapps']=pdo_getall('core_account_wxapp',array('uniacid'=>$_SESSION['uniacid']),array('id','title'));
	$return['htmls']=array(
		'type'=>'edit',
		'edit'=>array(
			array('type'=>'string','name'=>'index_page','title'=>'设置首页URL','help'=>'请设置系统标准格式URL'),
			array('type'=>'select','name'=>'wxapp_id','title'=>'选择关联小程序','options'=>'wxapps','help'=>'指定一个关联小程序用于开发调试！'),
		),
	);
	exi($return);
}
if($_RQ['op']=='down_wxapp'){
	$buffer_id=intval($_RQ['buffer_id']);
	$buffer=buffer_read($buffer_id);
	buffer_del($buffer_id);
	$name=trim($buffer['plugin_name']);
	//生成并下载小程序插件小程序
	if(!$name || preg_match('/\W/',$name)){
		exit('下载出错！');
	}
	$dir=ROOT_PLUGIN.$name;
	if(!is_dir($dir)){
		exit('插件不存在！');
	}
	$temp_dir=ROOT_AT.random(20);
	mkdir($temp_dir);
	
	//第一步，将小程序模版包拷贝入临时文件夹
	cfc('files')->file_copy(ROOT_D.'/core/resource/wxapp/wxapp_template',$temp_dir);
	
	//第二步，遍历插件目录，生成页面文件
	$actions=cfc('files')->file_tree($dir.'/custom/actions',array(),'.php');
	$pages=array();
	foreach($actions as $action_file){
		$action=substr($action_file,1,-4);
		if($action=='init'){
				continue;
		}
		$pages[]="\t\t\"{$name}/{$action}/index\",";
		$page_dir=$temp_dir.'/'.$name.'/'.$action;
		cfc('files')->mkdirs($page_dir);
		cfc('files')->file_copy(ROOT_D.'/core/resource/wxapp/page_template',$page_dir);
		$page_html_file=$dir.'/custom/templates/mobile/'.$action.'.html';
		if(is_file($page_html_file)){
			$bar='<include src="/pages/_navigation-bar.wxml"/>';
			$page_data=file_get_contents($page_html_file);
			$page_data=$bar.$page_data;
			//替换<div </div
			$page_data=str_replace('<div','<view',$page_data);
			$page_data=str_replace('</div','</view',$page_data);
			//赋值action
			$pagejs_data=file_get_contents($page_dir.'/index.js');
			$pagejs_data=str_replace('{action}',$action,$pagejs_data);
			file_put_contents($page_dir.'/index.js',$pagejs_data);
			file_put_contents($page_dir.'/index.wxml',$page_data);
		}
	}
	$pages=implode("\n",$pages);
	$window=ijson_encode(array('navigationStyle'=>'custom'));
	$app_json=file_get_contents($temp_dir.'/app.json');
	$app_json=str_replace('{pages}',$pages,$app_json);
	$app_json=str_replace('{window}',$window,$app_json);
	file_put_contents($temp_dir.'/app.json',$app_json);
	$wxapp=pdo_get('core_account_wxapp',array('id'=>$buffer['wxapp_id']));
	//全局样式
	$wxapp['syscolor']=$wxapp['syscolor']?:'#18bc9c';
	$css_json=file_get_contents($temp_dir.'/app.wxss');
	$css_json=str_replace('{syscolor}',$wxapp['syscolor'],$css_json);
	file_put_contents($temp_dir.'/app.wxss',$css_json);
	$setting=array(
		'index_url'=>SITEROOT."custom/index.php?i={$_SESSION['uniacid']}&wxgid={$buffer['wxapp_id']}",
		'api_url'=>SITEROOT."api.php?this=custom",
		'att_url'=>ATTACHMENT_URL,
		'siteroot'=>SITEROOT,
		'uniacid'=>$_SESSION['uniacid'],
		'wxgid'=>$buffer['wxapp_id'],
		'title'=>$wxapp['title'],
		'sharetitle'=>$wxapp['title'],
		'sharedesc'=>$wxapp['title'],
	);
	$app_js=file_get_contents($temp_dir.'/app.js');
	$app_js=str_replace(array('{index_page}','{setting}','{plugin_name}'),array($index_page,ijson_encode($setting),$name),$app_js);
	file_put_contents($temp_dir.'/app.js',$app_js);
	do{
		$zip=ROOT_AT.random(10).'.temp';
	}while(is_file($zip));
	cfc('files')->zip($temp_dir,$zip);
	cfc('files')->rmdirs($temp_dir);
	header('content-type: application/zip');
	header('content-disposition: attachment; filename="' . $name . '.zip"');
	readfile($zip);
	@unlink($zip);
	exit();
}
if($_RQ['op']=='config'){
	//生成配置文件
	$name=trim($_RQ['plugin_name']);
	$manifestxml=model('core/module')->int_manifest($name);
	file_put_contents(ROOT_PLUGIN.$name.'/manifest.xml',$manifestxml);
	exi('成功生成配置文件！可在插件根目录下查看！');
}
if($_RQ['op']=='down'){
	$url=download_url('core/app_develop.plugin/down_load/plugin_name='.$_RQ['plugin_name']);
	exi('','',$url);
}
if($_RQ['op']=='down_load'){
	//生成配置文件
	$name=trim($_RQ['plugin_name']);
	if(!$name || preg_match('/\W/',$name)){
		exit('下载出错！');
	}
	$dir=ROOT_PLUGIN.$name;
	if(!is_dir($dir)){
		exit('插件不存在！');
	}
	do{
		$zip=ROOT_AT.random(10).'.temp';
	}while(is_file($zip));
	cfc('files')->zip($dir,$zip);
	header('content-type: application/zip');
	header('content-disposition: attachment; filename="' . $name . '.zip"');
	readfile($zip);
	@unlink($zip);
	exit();
}
if($_RQ['op']=='release'){
	$id=intval($_RQ['id']);
	if(!$id){
		exi('请先选择插件！','error');
	}
	$params=array('id'=>$id);
	$plugin=pdo_get('core_plugins',$params);
	if($plugin['cloud_id']){
		//已存在cloud_id说明插件已经发布过了，直接前往发布版本
		$_SESSION['app_release']['plugin_name']=$plugin['name'];
		$url='core/app_release.plugin/v_add/cloud_id='.$plugin['cloud_id'];
	}else{
		$url='core/app_release.plugin/edit/name='.$plugin['name'];
	}
	exi('','',$url);
}
if($_RQ['op']=='releasemy'){
	$id=intval($_RQ['id']);
	if(!$id){
		exi('请先选择插件！','error');
	}
	$params=array('id'=>$id);
	$plugin=pdo_get('core_plugins',$params);
	pdo_update('core_plugins',array('up_my'=>1),$params);
	$_SESSION['app_release']['plugin_name']=$plugin['name'];
	$url='core/app_release.plugin/v_add/is_local=1&id='.$id;
	if(!$plugin['cloud_id']){
		exi('发布个人市场成功！还差发布新版本！（只有发布了版本的应用才能真正上架市场！）','',$url);
	}else{
		exi('发布个人市场成功！');
	}
}
if($_RQ['op']=='add'){
	$result['item']=array();
	$result['receives']=get_receive_types('id','title');
	$htmls=array(
		'type'=>'edit',
		'post'=>'post',
		'desc'=>'设置页面信息',
		'edit'=>array(
			array('type'=>'string','title'=>'插件标识','name'=>'name','help'=>'设置插件标识，仅支持英文大小写字母、数字、下划线'),
			array('type'=>'string','title'=>'基础插件标识','name'=>'basic', 'help'=>'留空则表示：独立插件，无需安装基础插件！' ),
			array('type'=>'string','title'=>'插件名称','name'=>'title', 'help'=>'设置插件名称，20字以内' ),
			array('type'=>'switch','title'=>'个人域插件？','name'=>'is_local', 'help'=>'如果是个人域插件，插件标识可以不受进云运用市场限制，但是如果标识重复，就只能发布到个人应用市场！' ),
			//array('type'=>'switch','title'=>'是否需要支付功能','name'=>'pay','help'=>'如果选择是，系统会自动添加支付结果处理方法（该方法审核支付结果，并将第三方支付单号存入数据库），您只需在接下来指定订单数据表（该数据表至少需包含两个字段：id、transaction_id和fee，id为发起支付时传递给系统的订单ID，transaction_id用来保存第三方支付单号，fee为支付金额）即可' ),
			//array('type'=>'string','title'=>'指定订单数据表','name'=>'order_table' , 'help'=>'指定订单数据表（数据表名由表前缀+插件标识+应用标识），此处只需填写订单数据表的应用标识即可'),
			array('type'=>'radio','title'=>'插件类型','name'=>'style','options'=>'styles'),
			array('type'=>'radio','title'=>'行业类型','name'=>'intype','options'=>'intypes','show'=>array('style'=>1)),
			array('name'=>'is_legao','type'=>'switch','title'=>'乐高场景体？','help'=>'根据客户运营场景，由多个插件乐高而成'),
			array('type'=>'switch','title'=>'是否提供链接','name'=>'link','help'=>'开启后，用户在调用系统连接选择接口的时候，可以在插件页面中选择插件指定的页面链接'),
			array('type'=>'radio','title'=>'用户端访问模式','name'=>'custom_access_type','options'=>'access_types','help'=>'单页式访问为默认访问模式。其基本访问流程为：用户访问一个插件页面时，系统先加载前端页面框架（系统框架页面、js、css），然后由前端向后端发起请求获取具体页面数据，进而渲染页面。直接访问模式为，系统收到用户访问请求后，直接交给插件相应页面处理，由插件负责页面所有内容的输出。'),
			array('type'=>'radio','title'=>'管理端访问模式','name'=>'manage_access_type','options'=>'access_types'),
			array('type'=>'checkbox','title'=>'特殊消息订阅','name'=>'receive','options'=>'receives','help'=>'设置要订阅的消息类型,不设置默认不订阅' ),
			array('type'=>'text','title'=>'功能说明','name'=>'description','help'=>'描述插件主要功能和特点' ),
		)
	);
	$result['styles']=get_plugin_styles();
	$result['intypes']=get_plugin_intypes();
	$result['access_types']=array(
		'0'=>'单页式访问',
		'1'=>'直接访问',
	);
	$result['htmls']=$htmls;	
	set_html('tabs',$tabs);
	exi($result);
}
if($_RQ['op']=='edit'){
	if($_RQ['id']){
		$item=pdo_get('core_plugins',array('id'=>intval($_RQ['id'])));
		$_SESSION['plugin_name']=$item['name'];
	}
	$result['item']=$item;
	$result['receives']=get_receive_types('id','title');	
	if($result['item']['id']){
		$read=true;
	}else{
		$read=false;
	}
	$menu=array(
		array('title'=>'基本设置','fa'=>'fa-gear','child'=>array(
			array(
				'title'=>'插件设置',
				'plugin'=>'core',
				'action'=>'app_develop.plugin',
				'op'=>'edit'
			),
			array(
				'title'=>'插件菜单',
				'plugin'=>'core',
				'action'=>'app_develop.plugin.menu',
			),
			array(
				'title'=>'diy页面',
				'plugin'=>'core',
				'action'=>'app_develop.plugin.diypage',
			),
			array(
				'title'=>'更换插件',
				'plugin'=>'core',
				'action'=>'app_develop.plugin',
				'op'=>'list'
			),
			array(
				'title'=>'查看效果',
				'action'=>'basic.module_home',
				'plugin'=>$result['item']['name'],
			),
			array(
				'title'=>'代码编辑',
				'plugin'=>'core',
				'action'=>'app_develop.plugin.edit_code',
			),
		)),
		array('title'=>'页面管理','fa'=>'fa-gear','child'=>array(
			'0'=>array(
				'title'=>'客户端页面',
				'plugin'=>'core',
				'action'=>'app_develop.plugin.cpage',
			),
			'1'=>array(
				'title'=>'管理端页面',
				'plugin'=>'core',
				'action'=>'app_develop.plugin.page',
			),
		)),
		array('title'=>'数据管理','fa'=>'fa-gear','child'=>array(
			array(
				'title'=>'数据结构',
				'plugin'=>'core',
				'action'=>'app_develop.plugin.table',
			),
			array(
				'title'=>'参数设置',
				'plugin'=>'core',
				'action'=>'app_develop.plugin.setting',
			),
			array(
				'title'=>'权限管理',
				'plugin'=>'core',
				'action'=>'app_develop.plugin.permission',
			),
		)),
		array('title'=>'第三方对外','fa'=>'fa-gear','child'=>array(
			array(
				'title'=>'对外链接',
				'plugin'=>'core',
				'action'=>'app_develop.plugin.link',
			),
			array(
				'title'=>'事件订阅管理',
				'plugin'=>'core',
				'action'=>'app_develop.plugin.subscribe',
			),
			array(
				'title'=>'插件数据类型',
				'plugin'=>'core',
				'action'=>'app_develop.plugin.field',
			),
		)),
	);
	set_html('menu',$menu);
	$htmls=array(
		'type'=>'edit',
		'post'=>'post',
		'desc'=>'设置插件信息',
		'tabs'=>array(
			array('op'=>'edit','title'=>'插件信息'),
		),
		'edit'=>array(
			array('type'=>'string','title'=>'插件标识','name'=>'name','help'=>'设置插件标识，仅支持英文大小写字母、数字、下划线','read'=>$read),
			array('type'=>'string','title'=>'基础插件标识','name'=>'basic', 'help'=>'留空则表示：独立插件，无需安装基础插件！' ),
			array('type'=>'string','title'=>'插件名称','name'=>'title', 'help'=>'设置插件名称，20字以内' ),
			//array('type'=>'switch','title'=>'是否需要支付功能','name'=>'pay','help'=>'如果选择是，系统会自动添加支付结果处理方法（该方法审核支付结果，并将第三方支付单号存入数据库），您只需在接下来指定订单数据表（该数据表至少需包含两个字段：id、transaction_id和fee，id为发起支付时传递给系统的订单ID，transaction_id用来保存第三方支付单号，fee为支付金额）即可' ),
			//array('type'=>'string','title'=>'指定订单数据表','name'=>'order_table' , 'help'=>'指定订单数据表（数据表名由表前缀+插件标识+应用标识），此处只需填写订单数据表的应用标识即可'),
			array('type'=>'radio','title'=>'插件类型','name'=>'style','options'=>'styles'),
			array('type'=>'radio','title'=>'行业类型','name'=>'intype','options'=>'intypes','show'=>array('style'=>1)),
			array('name'=>'is_legao','type'=>'switch','title'=>'乐高场景体？','help'=>'根据客户运营场景，由多个插件乐高而成'),
			array('type'=>'switch','title'=>'插件链接','name'=>'link','help'=>'开启后，系统链接选择接口可以选择到插件链接页面'),
			array('type'=>'radio','title'=>'用户端访问模式','name'=>'custom_access_type','options'=>'access_types','help'=>'单页式访问为默认访问模式。其基本访问流程为：用户访问一个插件页面时，系统先加载前端页面框架（系统框架页面、js、css），然后由前端向后端发起请求获取具体页面数据，进而渲染页面。直接访问模式为，系统收到用户访问请求后，直接交给插件相应页面处理，由插件负责页面所有内容的输出。'),
			array('type'=>'radio','title'=>'管理端访问模式','name'=>'manage_access_type','options'=>'access_types'),
			array('type'=>'switch','title'=>'支持接管平台','name'=>'istakeover'),
			array('type'=>'checkbox','title'=>'特殊消息订阅','name'=>'receive','options'=>'receives','help'=>'设置要订阅的消息类型,不设置默认不订阅' ),
			array('type'=>'text','title'=>'功能说明','name'=>'description','help'=>'描述插件主要功能和特点'),
		)
	);
	$result['styles']=get_plugin_styles();
	$result['intypes']=get_plugin_intypes();
	$result['access_types']=array(
		'0'=>'单页式访问',
		'1'=>'直接访问',
	);
	$result['htmls']=$htmls;
	exi($result);
}
if($_RQ['op']=='post'){
	$postdata=get_postdata();
	if(!$postdata['id']){
		//检查标识是否在本地重复
		if(!$postdata['name']){
			exi('请填写插件标识！','error');
		}
		if (preg_match("/[\x7f-\xff]/", $postdata['name'])){
			exi('应用标识不能带中文！','error');
		}
		$namef = substr($postdata['name'],0,1);
		if (intval($namef)){
			exi('应用标识,首字母必须是英文字母！','error');
		}
		$check=pdo_getcolumn('core_plugins',array('name'=>$postdata['name']),'id');
		if($check){
			exi('插件标识重复！请更换！','error');
		}
	}else{
		//此处更新下本地相关数据
		$local_update=array(
			'style'=>intval($postdata['style']),
			'intype'=>intval($postdata['intype']),
			'is_legao'=>intval($postdata['is_legao']),
			'link'=>intval($postdata['link']),
			'basic'=>$postdata['basic']
		);
		pdo_update('core_plugins',$local_update,array('name'=>$_SESSION['plugin_name']));
	}
	if($postdata['is_local']==1){
		if(!$postdata['id']){
			model('core/develop')->add_plugins($postdata,3);
		}
		exi('创建插件成功！','','list');
	}else{
		$params=array('postdata'=>$postdata);
		$result=cloud_request('plugin.plugin.post',$params);
		exi($result,'','list');
	}
}
if($_RQ['op'] == 'del'){
	$params=array();
	if($_RQ['id']){
		$params['id']=intval($_RQ['id']);
	}
	$plugin=pdo_get('core_plugins',$params);
	if($plugin['cloud_id'] || $plugin['up_my']){
		exi('已发布插件不能删除！','error');
	}
	pdo_delete('core_plugins',$params);
	exi('删除成功！','','list');
}
//代码生成
if($_RQ['op']=='made'){
	$id=intval($_RQ['id']);
	$params=array('id'=>$id);
	$result=cloud_request('plugin.plugin.made',$params);
	exi($result);
}
if($_RQ['op']=='table'){
	//插件数据表管理，对于兼容插件，开发者在此处设置插件所属数据表，方便同步云平台
	$id=intval($_RQ['id']);
	if($id){
		$plugin_name=pdo_getcolumn('core_plugins',array('id'=>$id),'name');
	}else{
		$plugin_name=$_RQ['name'];
	}
	if($plugin_name){
		$_SESSION['module']['plugin_name']=$plugin_name;
	}
	$pindex = max(1, intval($_RQ['page']));
	$psize = 15;
	$params=array('plugin_name'=>$_SESSION['module']['plugin_name']);
	//忽略项目名称
	if(!empty($_RQ['name'])){
		$params['name like']='%'.trim($_RQ['name']).'%';
		$return['params']['name']=$_RQ['name'];
	}
	$list=pdo_getslice('core_plugin_tables',$params,array($pindex,$psize),$total,array(),'','id desc');
	$return['list']=$list?$list:array();
	$totalpage=ceil($total/$psize);
	$totalpage=intval($totalpage);
	$return['totalpage'] =$totalpage;
	$return['params']['page'] =$pindex;
	$return['htmls']=array(
		'type'=>'list',
		'tabs'=>array(
			array('op'=>'list','title'=>'回到插件列表'),
			array('op'=>'table_add','title'=>'添加数据表'),
		),
		'list'=>array('data'=>'list','tip'=>'这里是用于支持打包插件，所需的设置；大部分原生插件是不需要设置数据表的，除部分兼容插件（安装的数据表名跟插件标识不一致的才需要）。','edit_op'=>'table_edit','del_op'=>'table_del','list'=>array(
			array('type'=>'string','name'=>'name','title'=>'数据表名'),
		)),
		'search_one'=>array('name'=>'name','add_op'=>'table_add'),
	);
	exi($return);
}
if($_RQ['op']=='install_data'){
	//设置初始化数据设置
	$id=intval($_RQ['id']);
	if($id){
		$name=pdo_getcolumn('core_plugins',array('id'=>$id),'name');
	}else{
		$name=$_RQ['name'];
	}
	if($name){
		$_SESSION['module']['plugin_name']=$name;
	}
	$name=$_SESSION['module']['plugin_name'];
	$list=pdo_getall('core_plugin_install_data',array('plugin_name'=>$name));
	if($list){
		foreach($list as &$item){
			if(!$item['type']){
				$item['num']='表内所有数据';
			}
		}
	}
	$return['list']=$list;
	$return['htmls']=array(
		'type'=>'list',
		'tabs'=>array(
			array('op'=>'list','title'=>'回到插件列表'),
			array('op'=>'data_edit','title'=>'添加初始化数据'),
		),
		'list'=>array('data'=>'list','tip'=>'这里是用于支持打包插件，所需的设置；（大部分插件是不需要初始化数据的，部分插件可能需要初始化数据。例如：默认任务执行数据，默认模板消息数据等），选择需要初始化数据的表，打包时会追加到安装数据里面','edit_op'=>'data_edit','del_op'=>'data_del','pagelist'=>false,'list'=>array(
			array('type'=>'string','name'=>'table','title'=>'数据表名'),
			array('type'=>'string','name'=>'num','title'=>'初始化数据条数'),
		)),
		'search_one'=>array('name'=>'table','add_op'=>'data_edit'),
	);
	exi($return);
}
if($_RQ['op']=='data_edit'){
	if($_RQ['postdata']){
		$post=get_postdata();
		if(!pdo_tableexists($post['table'])){
				exi($post['table'].'表不存在！','error');
		}
		$data=array_fields(array('table','type','num'),$post);
		$id=intval($post['id']);
		if($id){
			pdo_update('core_plugin_install_data',$data,array('id'=>$id));
		}else{
			$data['plugin_name']=$_SESSION['module']['plugin_name'];
			pdo_insert('core_plugin_install_data',$data);
		}
		exi('操作成功！','','install_data');
	}
	$id=intval($_RQ['id']);
	if($id){
		$item=pdo_get('core_plugin_install_data',array('id'=>$id));
	}else{
		$item=array();
	}
	$return['types']=array(
		'0'=>'表内全部数据',
		'1'=>'自定义条数',
	);
	$return['item']=$item;
	$return['htmls']=array(
		'type'=>'edit',
		'desc'=>'设置初始化数据',
		'tabs'=>array(
			array('op'=>'install_data','title'=>'返回初始化数据列表'),
		),
		'edit'=>array(
			array('type'=>'string','name'=>'table','title'=>'填写数据表名','help'=>'填写不含表前缀的数据表名'),
			array('type'=>'radio','name'=>'type','title'=>'数据条数类型','options'=>'types'),
			array('type'=>'string','name'=>'num','show'=>array('type',1),'title'=>'数据条数','help'=>'设置该数据表前多少条数据作为初始化数据'),
		),
	);
	exi($return);
}
if($_RQ['op']=='data_del'){
	$id=intval($_RQ['id']);
	if($id){
		pdo_delete('core_plugin_install_data',array('id'=>$id));
	}
	$del=trim($_RQ['del'],';');
	if($del){
		$del=explode(';',$del);
		foreach($del as $id){
			$id=intval($id);
			if($id){
				pdo_delete('core_plugin_install_data',array('id'=>$id));
			}
		}
	}
	exi('删除成功！');
}
if($_RQ['op']=='table_add'){
	//插件数据表管理，对于兼容插件，开发者在此处设置插件所属数据表，方便同步云平台
	if(!empty($_RQ['title'])){
		$tables=pdo_fetchall("SHOW TABLES LIKE '%".$_RQ['title']."%'");
		$return['params']['title']=$_RQ['title'];
	}else{
		$tables=pdo_fetchall("SHOW TABLES");
	}
	$has=pdo_getall('core_plugin_tables',array('plugin_name'=>$_SESSION['module']['plugin_name']),array('name'),'name');
	$list=array();
	$num=0;//每次最多读取50张表
	foreach($tables as &$table){
		$table=array_shift($table);
		$table=explode('_',$table,2);
		$table=$table['1'];
		if(!$has[$table] && $num<50){
			$list[]=array('id'=>$table);
			$num++;
		}
	}
	$return['list']=$list;
	$return['htmls']=array(
		'type'=>'list',
		'tabs'=>array(
			array('op'=>'list','title'=>'回到插件列表'),
			array('op'=>'table','title'=>'查看已添加的数据表'),
		),
		'list'=>array('data'=>'list','edit'=>false,'pagelist'=>false,'del_one'=>false,'delall'=>false,'del_message'=>'确认添加吗？','del_title'=>'添加','list'=>array(
			array('type'=>'string','name'=>'id','title'=>'数据表名'),
		),'batch'=>array(
			array('type'=>'post','url'=>'table_add_post','title'=>'一键添加'),
		)),
		'search_one'=>array('name'=>'title','add'=>false),
	);
	exi($return);
}
if($_RQ['op']=='table_add_post'){
	$ids=trim($_RQ['ids'],';');
	if($ids){
		$ids=explode(';',$ids);
	}else{
		$ids=array();
	}
	if($_RQ['id']){
		$ids[]=$_RQ['id'];
	}
	if($ids){
		foreach($ids as $name){
				$check=pdo_getcolumn('core_plugin_tables',array('name'=>$name,'plugin_name'=>$_SESSION['module']['plugin_name']),'id');
				$plugin_name=$_SESSION['module']['plugin_name'];
				if(!$check){
					$data=array(
						'plugin_name'=>$plugin_name,
						'name'=>$name,
					);
					pdo_insert('core_plugin_tables',$data);
				}
		}
		exi('添加成功！');
	}
	exi('请先选择要添加的数据表！','error');
}
if ($_RQ['op'] == 'table_del') {
	//删除忽略设置
	$id=intval($_RQ['id']);
	if($id){
		pdo_delete('core_plugin_tables',array('id'=>$id));
	}
	$del=trim($_RQ['del'],';');
	if($del){
		$del=explode(';',$del);
		foreach($del as $id){
			$id=intval($id);
			if($id){
				pdo_delete('core_plugin_tables',array('id'=>$id));
			}
		}
	}
	exi('删除成功！');
}
if($_RQ['op']=='set'){
	$id=intval($_RQ['id']);
	if(!$id){
		exi('请先选择插件！','error');
	}
	$update=array();
	$post=get_postdata();
	if(isset($post['is_local'])){
		$update['is_local']=intval($post['is_local']);
		if(intval($post['is_local'])==0){
			$name=pdo_getcolumn('core_plugin',array('id'=>$id),'name');
			$params=array('name'=>$name);
			$checkname=cloud_request('plugin.plugin.checkname',$params);
			if($checkname=='error'){
				exi('设置失败！进云市场已经存在本插件标识！','error');
			}
		}
	}
	if($update){
		pdo_update('core_plugins',$update,array('id'=>$id));
	}
	exi('操作成功！');
}